unit clsDepartamento_Produto;

interface

uses Dm, dbtables, biblio, clsDepartamento, classes, sysutils;

type
  TDepartamento_Produto = class(TObject)
  private
    Pro_codigo: string;
    Dep_codigo: string;
  public
    Dep_Observacao: string[40];
    function Gravar(p_Pro_codigo, p_Dep_codigo: string): Byte;
    function Recuperar(p_Pro_codigo, p_Dep_codigo: string): Byte;
    function Excluir(p_Pro_codigo, p_Dep_codigo: string): Byte;
    function Recuperar_Departamento(p_Pro_codigo: string): string;
    procedure Recuperar_Departamentos(var p_q: TQuery; p_Pro_codigo: string);
    function Recuperar_Produto(p_Dep_codigo: string): string;
    procedure Retorna_Deptos(p_Pro_codigo: string; var lista_deptos: TStringList);
    procedure Consultar(var p_q: TQuery; p_Pro_codigo: string);
  end;

implementation

uses DB;

function TDepartamento_Produto.Gravar;
var
  tq: TQuery;
begin
  tq := Tquery.Create(DmInt);
  tq.databasename := dmint.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('SELECT * FROM Departamento_Produto where Pro_codigo=:k_Pro_codigo and Dep_codigo=:k_Dep_codigo');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_Dep_codigo').asstring := strzero(p_Dep_codigo, 2);
  tq.open;
  if tq.eof then begin
    tq.sql.clear;
    tq.params.clear;
    tq.sql.add('INSERT INTO Departamento_Produto VALUES(' +
      ':k_Pro_codigo,' +
      ':k_Dep_codigo,' +
      ':k_Dep_Observacao)');
    tq.parambyname('k_Dep_Observacao').AsString := Dep_Observacao;
  end;
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_Dep_codigo').asstring := strzero(p_Dep_codigo, 2);

  tq.close;
  tq.execsql;
  result := 1;
  tq.close;
  tq.Free;
end;

function TDepartamento_Produto.Recuperar;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.sql.add('SELECT * FROM Departamento_Produto where Pro_codigo=:k_Pro_codigo and Dep_codigo=:k_Dep_codigo');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.params[1].asstring := strzero(p_Dep_codigo, 2);
  tq.open;
  Pro_codigo := p_Pro_codigo;
  Dep_codigo := p_Dep_codigo;
  Dep_Observacao := tq.FieldByName('Dep_Observacao').AsString;
  if tq.eof then begin
    Result := 0;
  end else begin
    Result := 1;
  end;
  tq.Close;
  tq.Free;
end;

function TDepartamento_Produto.Excluir;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := dmint.db.databasename;
  tq.active := False;
  tq.sql.Clear;
  tq.params.clear;
  tq.sql.add('DELETE FROM Departamento_Produto WHERE Pro_codigo=:k_Pro_codigo and Dep_codigo=:k_Dep_codigo');
  tq.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
  tq.parambyname('k_Dep_codigo').asstring := strzero(p_Dep_codigo, 2);
  tq.execSQL;
  Result := 1;
  tq.close;
  tq.Free;
end;

procedure TDepartamento_Produto.Consultar;
begin
  p_q.sql.Clear;
  p_q.Params.Clear;
  p_q.sql.add('Select * from Departamento_Produto where Departamento_produto.Pro_codigo=:k_Pro_codigo');
  p_q.parambyname('k_Pro_codigo').asstring := p_Pro_codigo;
end;

function TDepartamento_Produto.Recuperar_Departamento;
var
  tq: TQuery;
begin
  tq := TQuery.Create(dmint);
  tq.databasename := dmInt.db.DatabaseName;
  tq.active := false;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('Select * from Departamento_Produto where Pro_codigo=:a');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.open;
  Result := tq.fieldbyname('Dep_Codigo').asstring;
  tq.close;
  tq.free;
end;

function TDepartamento_Produto.Recuperar_Produto;
var
  tq: TQuery;
begin
  tq := TQuery.Create(dmint);
  tq.databasename := dmInt.db.DatabaseName;
  tq.active := false;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('Select * from Departamento_Produto where Dep_Codigo=:a');
  tq.Params[0].asstring := p_Dep_codigo;
  tq.open;
  Result := tq.fieldbyname('Pro_Codigo').asstring;
  tq.close;
  tq.free;
end;

procedure TDepartamento_Produto.Retorna_Deptos;
var
  tq: TQuery;
begin
  tq := Tquery.Create(dmint);
  tq.databasename := DmInt.Db.DatabaseName;
  tq.active := False;
  tq.sql.clear;
  tq.params.clear;
  tq.sql.add('Select * from Departamento_Produto where Pro_codigo=:k_Pro_codigo');
  tq.Params[0].asstring := p_Pro_codigo;
  tq.open;
  lista_deptos.clear;
  while not tq.eof do begin
    lista_deptos.add(tq.fieldbyname('Dep_Codigo').asstring);
    tq.next;
  end;
  tq.close;
  tq.free;
end;

procedure TDepartamento_Produto.Recuperar_Departamentos(var p_q: TQuery;
  p_Pro_codigo: string);
begin
  p_q.active := false;
  p_q.sql.clear;
  p_q.params.clear;
  p_q.sql.add('Select * from Departamento_Produto where Pro_codigo=:a order by Dep_Codigo');
  p_q.Params[0].asstring := p_Pro_codigo;
  p_q.open;
  p_q.First;
end;

end.
